package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JDBCDemo8 {
    public static void main(String[] args) {
        System.out.println("欢迎注册");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = scanner.nextLine();
        System.out.println("请输入密码");
        String password = scanner.nextLine();
        System.out.println("请输入昵称");
        String nickname = scanner.nextLine();
        System.out.println("请输入年龄");
        int age = scanner.nextInt();

        try (Connection connection = DBUtil.getConnection();) {

            //构建一条 INSERT 语句，把用户输入的信息插入到 user 表中。
            //该表包含 username、password、nickname 和 age 这几个字段
            //由于使用了占位符 VALUES(?,?,?,?)，
            String sql = "INSERT INTO user(username,password,nickname,age)" +
                    "VALUES(?,?,?,?)";

          //PreparedStatement：预编译的好处是可以避免 SQL 注入攻击，
            PreparedStatement ps = connection.prepareStatement(sql);

            //使用了占位符 VALUES(?,?,?,?)，所以需要通过 PreparedStatement 对象为这些占位符设置具体的值。
            ps.setString(1, username);
            ps.setString(2, password);
            ps.setString(3, nickname);
            ps.setInt(4, age);

            int num = ps.executeUpdate();
            System.out.println(num > 0 ? "注册成功" : "注册失败");


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}